disp('Filtering FIT: std and auto in M-errors')
table(round(outDiagnostics.meanMerrors'*10000,2),round(outDiagnostics.stdMerrors'*10000,2),round(outDiagnostics.stdMerrorsNoOutlier'*10000,2),...
    round(outDiagnostics.autoCorrMerrors(1,:)',2),round(outDiagnostics.autoCorrMerrors(4,:)',2),...
    'VariableNames',{'Means', 'Stds','Stds_no_outliers','autorr_1','autorr_4'},...
    'RowNames',structData.dataLabels(1:size(outDiagnostics.meanMerrors,2))')

disp('Standardized Innovations')
table(outDiagnostics.meanInovShocksScaled,outDiagnostics.stdInovShocksScaled,outDiagnostics.autoCorrInovShocks(:,1:4),...
    'VariableNames',{'Means', 'Stds','autorr_1to4'},...
    'RowNames',outEstim.model.labelx(outEstim.model.nx1+1:end)')

disp('MACRO VARIBLES: Mean and std')
table(mean(structData.data(:,1:setupFilter.numMacro),1)',outEstim.outFilter.resMoments.meanForEstim(1:setupFilter.numMacro,:),...
    std(structData.data(:,1:setupFilter.numMacro),0,1)',outEstim.outFilter.resMoments.stdForEstim(1:setupFilter.numMacro,:))

disp('YIELD CURVE: Mean and std')
mats = outEstim.setupFilter.maturities;
nn   = length(mats);
table(mats',mean(structData.data(:,setupFilter.numMacro+1:setupFilter.numMacro+nn),1)',outEstim.outFilter.resMoments.meanYields(mats),...
    std(structData.data(:,setupFilter.numMacro+1:setupFilter.numMacro+nn),0,1)',outEstim.outFilter.resMoments.stdYields(mats,1))

disp('CS REGRESSION LOADINGS')
table(CSdata.maturities',CSdata.CSbetta(2,:)',outEstim.outFilter.resMoments.CS_loadings')

disp('Risk-Adjusted CS REGRESSION LOADINGS')
idx = [3 5 7 10];
table(outEstim.CS_riskAdj.maturities(idx)',round(outEstim.CS_riskAdj.CSbetta(2,(idx))',2),round(outEstim.CS_riskAdj.CSBetta_CI95Boot(:,(idx))',2))
disp(['Objective function = ',num2str(outEstim.outFilter.Q)])

